#include"db.hpp"


static string server = "localhost";
static string usr = "root";
static string password = "westmo203226";
static string dbname = "chat";
// 构造函数
Mysql::Mysql()
{
    _conn = mysql_init(NULL);
}
// 析构函数
Mysql::~Mysql()
{
    // 关闭连接
    if (_conn != nullptr)
    {
        mysql_close(_conn);
    }
}
// 连接数据库
bool Mysql:: connect()
{
    cout<<server<<" "<<usr<<" "<<password<<" "<<dbname<<" "<<endl; 
    MYSQL *p = mysql_real_connect(_conn, server.c_str(), usr.c_str(), password.c_str(), dbname.c_str(),3306,nullptr,0);
    //cout<<"bool:"<<(bool)p<<endl;
    printf("err:%s\n",mysql_error(_conn));

    if (p != nullptr)
    {
        // 设置编码方式
        // C/C++代码默认的编码字符是ASCII，如果不设置，从MYSQL上拉下来的中文显示?
        mysql_query(_conn, "set names gbk");
        return true;
    }
    return false;
}


// 更新数据库
bool Mysql:: update(string sql)
{
    if (mysql_query(_conn, sql.c_str()))
    {
        printf("err:%s\n",mysql_error(_conn));
        LOG_INFO << __FILE__ << ":" << __LINE__ << ":"
                 << sql << "更新失败!";
        return false;
    }
    return true;
}

// 查询操作
MYSQL_RES* Mysql::query(string sql)
{
    if (mysql_query(_conn, sql.c_str()))
    {
        LOG_INFO << __FILE__ << ":" << __LINE__ << ":"
                 << sql << "查询失败!";
        return nullptr;
    }
    return mysql_use_result(_conn);
}


MYSQL* Mysql::getConnection()
{
    return _conn;
}